This invention relates generally to data streams, and more particularly to server-side switching of such streams.
The Internet has become an increasingly popular manner by which to convey information such as multimedia clips. There are generally at least two ways for a user to download such clips from a remote server to be played on his or her (client) computer. First, the user can initiate a download, such that when a clip has finished being downloaded, it can be played on the computer. However, this is disadvantageous, because many clips are relatively large in file size, which means that the user may have to wait a long time before he or she can play a given clip.
A second way is known as streaming. With streaming technology, the user""s computer requests that the server begin sending a stream of data thereto. As the stream of data is being received, it is immediately played on the user""s computer, with a predetermined buffer allowance so that if there is a delay in transmission, playing of the multimedia clip is not interrupted. Streaming is advantageous over completely downloading a clip before beginning playback, because the user is able to play the clip immediately as it is being received, without the delay in waiting for the downloading of the clip to be completed.
However, a disadvantage with streaming as per its most common transmission mechanism, known as HyperText Transport Protocol, or HTTP, is that the server is usually able only to respond to a relatively simple xe2x80x9cget streamxe2x80x9d request sent by a client computer. Thus, a user""s computer issues a xe2x80x9cget streamxe2x80x9d request to the server, and in response, the server sends the desired stream to the user""s computer. This is disadvantageous because the server is able only to send the requested stream, and after the requested stream has finished being transmitted, must usually wait for another xe2x80x9cget streamxe2x80x9d request before sending another stream to the user""s computer.
For example, a user may desire to have an episode of a television program transmitted via streaming. Such an episode, however, may have multiple streams: a first stream of the introduction of the program, followed by one or more streams related to advertisements, followed by a stream of a first part of the program, followed by more streams related to advertisements, etc. In such a situation, the server is generally not able to indicate to the client computer that a given stream is to end and a new stream is to begin. That is, the server is generally not able to switch streams while streaming multimedia clips to a client computer.
For these and other reasons, there is a need for the present invention.
The above-identified problems, shortcomings and disadvantages with the prior art, as well as other problems, shortcoming and disadvantages, are solved by the present invention, which will be understood by reading and studying the specification and the drawings. In one embodiment of the invention, a system includes a server and a client. The server is capable of sending data within a first stream and a second stream via packets. The packets begin with a predetermined data designator. The server is also capable of indicating switching from the first to the second stream via a packet with a predetermined switching designator. The client is capable of receiving the packets containing the data within the first and the second streams, as well as the packet with the predetermined switching designator.
Thus, the invention provides for advantages not found in the prior art. In one particular embodiment, desirably the packets are formatted according to the HyperText Transport Protocol (HTTP), and the server and the client are communicatively coupled via the Internet. In response to a xe2x80x9cget streamxe2x80x9d request from a client, a server is able to send packets of data relating to the desired stream, and is able to indicate to the client that it is switching from transmitting that stream of data to another stream of data, via a packet with a predetermined switching designator. Thus, in an example where a server desires to switch from a stream relating to a television program to a stream relating to an advertisement, it is able to do so.